package br.com.mensageiro.negocio.dao;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import br.com.mensageiro.negocio.entidade.MensagemDestinatario;
import br.com.mensageiro.negocio.entidade.Usuario;

@Repository("mensagemDestinatarioDao")
public class MensagemDestinatarioDAO extends GenericDAO<MensagemDestinatario> {
	public MensagemDestinatarioDAO() {
		super(MensagemDestinatario.class);
	}

	@Override
	public MensagemDestinatario doInserir(MensagemDestinatario t) {
		return super.doInserir(t);
	}

	private List<MensagemDestinatario> mensagemDestinatarioParametros;

	public List<MensagemDestinatario> getMensagemDestinatarioParametros(String usuarioNome, String assunto, Date data, Usuario usuario) {
		Map<String, Object> params = new HashMap<String, Object>();
		String query = "select m from " + MensagemDestinatario.class.getName() + " m where m.usuario = :pusuario ";
		params.put("pusuario", usuario);

		if (!usuarioNome.equals("")) {
			query += "and lower(m.mensagem.usuario.nome) like :pnome ";
			params.put("pnome", "%" + usuarioNome.toLowerCase() + "%");
		}

		if (!assunto.equals("")) {
			query += "and lower(m.mensagem.assunto) like :passunto ";
			params.put("passunto", "%" + assunto.toLowerCase() + "%");
		}

		if (data != null) {
			query += "and m.mensagem.dtinclusao = :pdtinclusao ";
			params.put("pdtinclusao", data);
		}

		query += "order by id desc and m.mensagem.dtinclusao desc";

		mensagemDestinatarioParametros = getListarPorParametros(query, params);

		return mensagemDestinatarioParametros;
	}
}
